package com.company.repository.impl;

import com.company.repository.UserRepository;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Repository;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.stream.Collectors;

@Repository
public class UserRepositoryImpl implements UserRepository {
    @Override
    public List<String> getUserMsgs() {
        /*
         * ClassPathResource类是Spring框架中的一个类，用于表示类路径下的资源，Spring 会在类路径根目录下查找 user.txt 文件
         * 编译后的字节码文件和资源会被放在目标目录（target/classes），这就是程序运行时的类路径根目录。
         * 对于maven项目来说，
         * src/main/java 中的代码经过编译后生成的 .class 文件，
         * 以及 src/main/resources 中的资源文件，都会被复制到 target/classes 目录。
         * */
        // 这种方式相比于原始的 FileReader 读取文件，更加方便，灵活。
        ClassPathResource resource = new ClassPathResource("user.txt");
        try (BufferedReader br = new BufferedReader(
                new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8))) {
            // 使用br.lines()方法，会返回一个 Stream<String>。
            // 将 Stream<String> 转换为 List<String>，返回给服务层
            return br.lines().collect(Collectors.toList());
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
